/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package BL;


import BD.LogBD;
import BE.Log;
import BE.Severidad;
import BE.Tipooperacion;
import BE.Usuario;
import java.net.UnknownHostException;
import java.util.Calendar;
import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import BE.Modulo;
import javax.servlet.http.HttpServletRequest;
import util.Web;

// Fin de Logueo

/**
 *
 * @author Oscar
 * @author Marco
 */
public class LogBL {

    private LogBD objLogBD = new LogBD();

    public boolean insertarLog(Log objLog){

      return objLogBD.insertarLog(objLog);

    }


     /**
      * Registar una ocurrencia en el sistema
      *
      * @param request
      *   objeto request obtenido en los metodos de los Action's
      * @param id_modulo
      *   Uno de los identificadores de la enumeración ModuloBL.modules, por
      *   ejemplo ModuloBL.modules.SEGURIDAD.ordinal()
      * @param id_severidad
      *   Uno de los identificadores de la enumeración SeveridadBL.nivel, por
      *   ejemplo SeveridadBL.nivel.AVISO.ordinal()
      * @param id_toperacion
      *   Uno de los identificadores de la enumeración TipoOperacionBL.tipo, por
      *   ejemplo TipoOperacionBL.tipo.MODIFICAR.ordinal()
      * @param strTitulo
      *   El contenido principal del log
      * @param strDescripcion
      *   Los detalles de la operacion realizada
      */
    public static void GenerarLog(HttpServletRequest request, Integer id_modulo, Integer id_severidad, Integer id_toperacion, String strTitulo, String strDescripcion) {

        Modulo objModulo = new Modulo();
        objModulo.setSrlIdmodulo(id_modulo);
        Severidad objSeveridad = new Severidad();
        objSeveridad.setSrlIdseveridad(id_severidad);
        Tipooperacion objTipoOperacion = new Tipooperacion();
        objTipoOperacion.setSrlIdtipooperacion(id_toperacion);

        UsuarioBL objUsuarioBL = new UsuarioBL();
        Usuario objUsuario = objUsuarioBL.obtieneUsuarioAutenticado(request);
        if (objUsuario == null) {
            Usuario objUsuarioAnonimo = new Usuario();
            objUsuarioAnonimo.setSrlIdpersona(0);
            objUsuario = objUsuarioBL.buscarUsuarioPorSrl(objUsuarioAnonimo);
        }

        Log objLog = new Log();
        try {
            objLog.setCvIp(java.net.InetAddress.getLocalHost().getHostAddress());
        } catch (UnknownHostException ex) {
            Logger.getLogger(LogBL.class.getName()).log(Level.SEVERE, null, ex);
            // si no se pudo usar la direccion nula
            objLog.setCvIp("0.0.0.0");
        }
        objLog.setCvDescripcion(strDescripcion);
        objLog.setCvMac("simple");
        objLog.setCvTitulo(strTitulo);

        // para obtener la fecha
        Date d = new Date();
        Calendar cal = Calendar.getInstance();
        cal.setTime(d);
        objLog.setDtFechahora(cal.getTime());
        // fin de fecha

        objLog.setModulo(objModulo);
        objLog.setSeveridad(objSeveridad);
        objLog.setTipooperacion(objTipoOperacion);
        objLog.setUsuario(objUsuario);

        LogBL objLogBL = new LogBL();
        objLogBL.insertarLog(objLog);
    }
}
